﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>


//int isPerfectNumber(int num) {
//    if (num <= 1) return 0; // 完数必须大于1
//
//    int sum = 1; // 1是所有数的真因子
//    for (int i = 2; i * i <= num; i++) {
//        if (num % i == 0) 
//        {
//            sum += i;
//            if (i != num / i) sum += num / i; // 避免重复加平方因子
//        }
//    }
//    return sum == num;
//}
//int main() 
//{
//    printf("1000以内的完数有：\n");
//    for (int num = 2; num <= 1000; num++)
//    {
//        if (isPerfectNumber(num))
//        {
//            printf("%d: 真因子为 ", num);
//            // 打印所有真因子（可选）
//            printf("1");
//            for (int i = 2; i <= num / 2; i++)
//            {
//                if (num % i == 0) printf(", %d", i);
//            }
//            printf("\n");
//        }
//    }
//
//    return 0;
//}

//判断完数
//int main()
//{
//	int num = 0;
//	int sum = 1;
//	scanf("%d", &num);
//	if (num <= 1)
//	{
//		printf("%d不是完数！\n", num);
//		return 0;
//	}
//          //完全平方数9=1*9=3*3;(sqrt(9)=3)
//                    16=1*16=2*8=4*4;(sqrt(16)=4)
//					  25=1*25=5*5;(sqrt(25)=5)
//	for (int i = 2; i * i <= num; i++)//一个数字的因数是成对出现的，一方从1递增到sqrt(num)，一方从该数递减到sqrt(num)
//	{
//		if (num % i == 0)
//			sum += i;
//		if (i != num / i)//去掉重复的真因子
//			sum += num / i;
//	}
//	if (sum == num)
//		printf("%d是完数\n", num);
//	else
//		printf("%d不是完数\n", num);
//
//	return 0;
//}






//猴子吃桃
//int main()
//{
//	//第十天桃子只剩下一个了
//	int day, x1, x2;
//	x2 = 1;
//	for (day = 9; day > 0; day--)//从第九天开始
//	{
//		//每一天吃桃子的一半多一个
//		//第二天的桃子是第一天桃子数的一半少一个
//		x1 = (x2 + 1) * 2;//第一天的桃子数量是第二天桃子数+1后的2倍
//		x2 = x1;
//	}
//
//	return 0;
//}




//迭代法求平方根
#include <math.h>
//double sqrt_iterative(double a)
//{
//    double x0 = a; // 初始猜测值
//    double x1 = 0.0;
//    double diff = 0.0;
//    do 
//    {
//        x1 = 0.5 * (x0 + a / x0); // 迭代公式
//        diff = fabs(x1 - x0);      // 计算差值
//        x0 = x1;                   // 更新x0为下一次迭代的初始值
//    } while (diff >= 1e-5);        // 终止条件
//    return x1;
//}
//int main() 
//{
//    double a;
//    printf("请输入一个正数: ");
//    scanf("%lf", &a);
//
//    if (a < 0) 
//    {
//        printf("错误：输入不能为负数！\n");
//        return 1;
//    }
//    double result = sqrt_iterative(a);
//    printf("平方根: %.6f\n", result);
//
//    return 0;
//}

//背诵代码-迭代法
//double sqrt_iterative(double a)
//{
//	double x = a;
//	double next;
//	while (1)
//	{
//		next = 0.5 * (x + a / x);
//		if (fabs(next - x) < 1e-5)
//			break;
//		x = next;
//	}
//	return next;
//}
//int main()
//{
//	double a;
//	scanf("%lf", &a);
//	if (a < 0)
//	{
//		printf("错误\n");
//		return 1;
//	}
//	printf("%lf\n", sqrt_iterative(a));
//
//	return 0;
//}

//二分法求方程的根-背诵代码
// 定义方程 f(x) = 2x³ - 4x² + 3x - 6
//double f(double x)
//{
//    return 2 * x * x * x - 4 * x * x + 3 * x - 6;
//}
//// 二分法求根
//double bisection_method(double a, double b) 
//{
//    if (f(a) * f(b) >= 0)
//    { // 检查区间是否有根
//        printf("错误：区间两端点函数值同号，无法保证有根。\n");
//        return NAN; // 返回非数字（需 #include <math.h>）
//    }
//    double c;
//    while (fabs(b - a) >= 1e-10) 
//    { // 区间足够小则停止
//        c = (a + b) / 2;
//        if (f(c) == 0.0) break; // 刚好找到根
//        if (f(a) * f(c) < 0) b = c; // 根在左半区间
//        else a = c; // 根在右半区间
//    }
//    return (a + b) / 2; // 返回最终区间的中点
//}
//int main() 
//{
//    double root = bisection_method(-10, 10);
//    if (!isnan(root))
//    { // 检查是否有效
//        printf("方程的根: %.6f\n", root);
//    }
//    return 0;
//}





//打印菱形
//int main()
//{
//	int i = 0, j = 0;
//	for (i = 1; i <= 4; i++)
//	{
//		for (j = 1; j <= 4 - i; j++)
//			printf(" ");
//		for (j = 1; j <= 2 * i - 1; j++)
//			printf("*");
//		printf("\n");
//	}
//	for (i = 1; i <= 3; i++)
//	{
//		for (j = 1; j <= i; j++)
//			printf(" ");
//		for (j = 1; j <= 2 * (3 - i) + 1; j++)
//			printf("*");
//		printf("\n");
//	}
//
//	return 0;
//}



//int main() {
//    int n = 5;
//
//    for (int i = 1; i <= n; i++)
//    {	
//        // 打印空格
//        for (int j = 1; j <= n - i; j++)
//		{
//            printf(" ");
//		}
//        // 打印左侧升序数字
//        for (int k = 1; k <= i; k++) 
//		{
//            printf("%d", k);
//		}
//        // 打印右侧降序数字
//        for (int l = i - 1; l >= 1; l--) 
//		{
//            printf("%d", l);
//		}
//        printf("\n");
//    }
//
//    return 0;
//}





//对手匹配
//int main()
//{
//	char A, B, C;
//	for (A = 'X'; A <= 'Z'; A++)
//	{
//		for (B = 'X'; B <= 'Z'; B++)
//		{
//			for (C = 'X'; C <= 'Z'; C++)
//			{
//				if ((A != B) && (A != C) && ( B!= C))
//				{
//					if (A != 'X' && C != 'X' && C != 'Z')
//						printf("A vs %c\nB vs %c\nC vs %c\n", A, B, C);
//				}
//			}
//		}
//	}
//
//	return 0;
//}




int main()
{
	int day = 0, buy = 2;
	double sum = 0.0, ave = 0.0;
	do
	{
		sum += buy * 0.8;
		day++;
		buy *= 2;
	} while (buy <= 100);
	ave = sum / day;
	printf("%lf\n", ave);

	return 0;
}